package gframework.classe;

import gframework.bean.Util;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Format {

    public static String dataBanco(String i_data) throws Exception {
        return new SimpleDateFormat("yyyy-MM-dd").format(new SimpleDateFormat("dd/MM/yyyy").parse(i_data));
    }

    public static String dataGUI(Date i_data) throws Exception {
        return new SimpleDateFormat("dd/MM/yyyy").format(i_data);
    }

    public static String dataHoraGUI(Date i_dataHora) throws Exception {
        return new SimpleDateFormat("dd/MM/yyyy HH:mm").format(i_dataHora);
    }

    public static String dataHoraBanco(String i_dataHora) throws Exception {
        try {
            return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").parse(i_dataHora));
        } catch (Exception ex) {
            return new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new SimpleDateFormat("dd/MM/yyyy HH:mm").parse(i_dataHora));
        }
    }

    public static String mesAno(String i_data) throws Exception {
        return i_data.substring(3);
    }

    public static String horaGUI(Date i_data) throws Exception {
        return new SimpleDateFormat("HH:mm").format(i_data);
    }

    public static String diaSemana(String i_data) throws Exception {
        return Util.formatDiaSemana(new SimpleDateFormat("dd/MM/yyyy").parse(i_data));
    }

    public static String diaSemana(Date i_data) throws Exception {
        return new SimpleDateFormat("EEEE").format(i_data).replace("á", "a").replace("ç", "c").toUpperCase();
    }

    public static String numero(long i_valor, int i_tamanho) {
        return numero(String.valueOf(i_valor), i_tamanho);
    }

    public static String numero(String i_valor, int i_tamanho) {
        String zero = "";

        for (int i = 0; i < (i_tamanho - i_valor.length()); i++) {
            zero += "0";
        }

        return zero + i_valor;
    }

    public static String texto(String i_texto, int i_tamanho) throws Exception {
        String texto = "";

        if (i_texto.length() > i_tamanho) {
            texto = i_texto.substring(0, i_tamanho);
        } else {
            texto = i_texto;
        }

        String espaco = "";

        for (int i = 0; i < (i_tamanho - texto.length()); i++) {
            espaco += " ";
        }

        return texto + espaco;
    }

    public static String decimal(double i_valor, int i_casa) throws Exception{
        if (i_casa == 0) {
            return new DecimalFormat("###,##0").format(i_valor);
        } else {
            String formato = "###,##0.";

            for (int i = 0; i < i_casa; i++) {
                formato = formato.concat("0");
            }

            return new DecimalFormat(formato).format(i_valor);
        }
    }

    public static String telefoneGUI(String i_telefone) throws Exception {
        String telefone = texto(i_telefone, 11);
        
        return "(" + telefone.substring(0, 2) + ") " + telefone.substring(2);
    }
}
